/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fait.ferm.ui;

import fait.ferm.global.Glob;
import fait.ferm.global.TB;
import fait.ferm.persists.Cow;
import fait.ferm.persists.Cow_group;
import fait.ferm.persists.Directory;
import fait.ferm.persists.Equipment;
import fait.ferm.persists.Resource_counter;
import fait.ferm.tools.Tools;
import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Accordion;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.TableView;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;

/**
 *
 * @author Greg
 */
public class PetsTabController  implements Initializable  {
    @FXML
    Accordion petsGroupAccordion;
    @FXML
    Accordion equipAccordion;
    @FXML
    TableView<TB.Table3Col> matTab;
	
	ProgressIndicator ppp;
    
    @Override
    public void initialize(URL location, ResourceBundle resources) {
		fillPets();
		fillEquipment();
		fillResource();
		petsGroupAccordion.setExpandedPane(petsGroupAccordion.getPanes().get(0));
		equipAccordion.setExpandedPane(equipAccordion.getPanes().get(0));
		}
    
	private void fillPets(){
        //заполнить аккордион группами животных
        try {
			petsGroupAccordion.getPanes().clear();
            ArrayList<Cow_group> cow_group = (ArrayList<Cow_group>)Glob.getFermEngine().getCowGroup().obj;
            
            for(int index_group = 0; index_group < cow_group.size(); ++index_group) {
                Cow_group cur_group = cow_group.get(index_group);
                BorderPane conteiner = new BorderPane(); //контейнер для вкладки акордиона
                ListView cowList = new ListView(); //чтобы вывести список
                TitledPane buf = new TitledPane(cur_group.toString(), conteiner); //вкладка аккордиона
		
                
                petsGroupAccordion.getPanes().add(buf);
                conteiner.setCenter(cowList); //устанавливаем список в центр, т.е. размером во всю вкладку
                
                ObservableList cows = FXCollections.observableArrayList();
                ArrayList<Cow> cow = (ArrayList<Cow>)Glob.getFermEngine().getCowFromGroup(cur_group.getId()).obj;
                
                for(int index_cow = 0; index_cow < cow.size(); ++index_cow) {
                    Cow cur_cow = cow.get(index_cow);
                    //BorderPane cowInfo = new BorderPane(); //чтобы разделить прогресс бар с её именем, использую бордер пайн 
					HBox cowInfo = new HBox(16.0);
                    cows.add(cowInfo);
                    ProgressIndicator wear = new ProgressBar(); //для вывода визуального состояния лошади

                    wear.progressProperty().set(cur_cow.percent_wear);
					Tools.setProgressColor(wear);
					
					cowInfo.getChildren().add(wear);
					cowInfo.getChildren().add(new Label(cur_group.cow_type.getName() + " " + cur_cow.getId()));
					
                }
                
                cowList.setItems(cows); //подцепляем лист к контролу
            }
        } catch (Exception ex) {
            //
        }
		
	}
	private void fillEquipment(){
        //заполнить аккордион оборудованием
			 equipAccordion.getPanes().clear();
            //ArrayList<SimpleDirItem> eqType = (ArrayList<Cow_group>)Glob.getFermEngine().getCowGroup().obj;
//			Directory eqType = Glob.getDirInCache("equipment_type");
            ArrayList<Equipment> eq = (ArrayList<Equipment>)Glob.getFermEngine().getEquipment().obj;
            for(Equipment n: eq) {
				System.out.println(""+n.toString());
			}
//            for(SimpleDirItem x: eqType.getItems()){
                BorderPane conteiner = new BorderPane(); //контейнер для вкладки акордиона
                ListView eqList = new ListView(); //чтобы вывести список
                TitledPane buf = new TitledPane( "Имеющееся оборудование", conteiner);//x.getName(), conteiner); //вкладка аккордиона
                
                equipAccordion.getPanes().add(buf);
                conteiner.setCenter(eqList); //устанавливаем список в центр, т.е. размером во всю вкладку
                ObservableList eqs = FXCollections.observableArrayList();
                
                for(Equipment n: eq) {
			//		if(x.getId()==n.equipment_type_id.getId()){
						HBox eqInfo = new HBox(16.0);
						eqs.add(eqInfo);
						ProgressBar wear = new ProgressBar(); //для вывода визуального состояния лошади

						wear.progressProperty().set(n.percent_wear);
						eqInfo.getChildren().add(wear);
						eqInfo.getChildren().add(new Label(n.toString()));
			//		}
                }				
                eqList.setItems(eqs); //подцепляем лист к контролу
			//}
		
	}
	private void fillResource(){
		ArrayList<Resource_counter> ar = (ArrayList<Resource_counter>) Glob.getFermEngine().getResourceCounters().obj;
		ObservableList<TB.Table3Col> items = FXCollections.observableArrayList();
		for(Resource_counter rc: ar){
			double val = rc.quantity-rc.quantity_beg_month; //потрачено с начала месяца
			TB.Table3Col ob = new TB.Table3Col(rc.resource_type_id.getName(), String.format("%.2f", rc.quantity), String.format("%.2f", val));
			items.add(ob);
		}
		TB.bind(matTab);
		matTab.setItems(items);
				
	}
	
}
